Reliable transport protocols are used in packet switched networks in order to transmit data from a transmission source to a transmission destination. Protocols describe the formats of data packets exchanged between elements of the network, the actions taken on receipt of data packets and how to handle errors. Conventional transport protocols are devised for use with traditional networks comprising wire links and stationary hosts. Such protocols assume congestion in the network to be the primary cause for packet losses and unusual delays.
The main transport protocols used over IP networks are the user datagram protocol (UDP) and the transmission control protocol (TCP). The TCP sender uses cumulative acknowledgements it receives to determine which packets have reached the receiver and provides reliability by re-transmitting lost packets. The sender identifies the loss of a packet either by the arrival of several duplicate cumulative acknowledgements or the absence of an acknowledgement for the packet within a time out interval. TCP attends to packet losses by dropping its transmission window size before re-transmitting packets, initiating congestion control or avoidance mechanisms and breaking off its re-transmission timer. These measures result in a reduction in the load on the intermediate link, whereby controlling the congestion in the network.
When packets are lost in a network for reasons other than congestion, these measures result in an unnecessary reduction in end-to-end throughput and, thus, in transmission efficiency. Wireless links within the networks will be of increasing importance for future networks. Communication over wireless links is often characterized by high bit-error rates. TCP performance in such networks suffers from significant throughput degradation and very high interactive delays.
While TCP is used for reliable transmission of a stream of bytes, the user datagram protocol (UDP) is used for unreliable transmission. UDP only offers minimal service beyond those provided by the network layer protocol, namely a check sum for the data included in the packet. UDP does not include a sequence number and, thus, is not capable of detecting losses of packets. Typically, another protocol is used over UDP, for instance the real-time transport protocol (RTP). RTP provides end-to-end network transport functions suitable for applications transmitting real-time data, such as interactive audio and video. Those services include payload type identification, sequence numbering, time stamping and delivery monitoring. RTP typically runs on top of UDP in order to make use of its multiplexing and error detection services. Both protocols contribute in this way partly to the transport protocol functionality. The sequence numbers included in RTP allow the receiver to reconstruct the sender's packet sequence. But as the check sum is done by UDP and the corrupted packets are discarded by UDP, such corrupted packets contribute to losses seen by RTP.
TCP may also be combined with another protocol, for instance the Snoop protocol. The Snoop protocol monitors every packet that passes through the TCP connection in both directions and maintains a cache of TCP segments sent across the link that have not yet been acknowledged by the receiver. A packet loss is detected and a retransmission may be initiated without letting TCP know of any bit error losses. The disadvantage of such a solution is that all the wireless links on the path shall support this option. Such an approach consumes memory in all base stations and does not provide a proper end-to-end solution.
Preferably, the response of a reliable transport protocol should, after detecting a packet loss, vary according to the kind of loss. If a data packet is lost due to congestion, the transmission source should reduce its sending bit rate. A congestion loss indicates that at least one network element (i.e. IP router) receives more data packets than it is able to deliver. Received data packets are fed into a queue. As the queue is filled with received packets, further incoming packets are discarded. In order to guarantee a reliable data packet transmission, the number of data packets buffered in the queue in a network element has to be reduced. This is achieved by reducing the sending bit rate of all applications according to a predetermined mechanism, called congestion control.
If a data packet has been lost due to data corruption, a reduction of the sending bit rate does not result in a bit error free transmission. Only the use of an increased sender forward error correction (FEC) coding may achieve a reliable, error free data transmission.
Alternatively, lost data packets may be re-transmitted. The re-transmission of lost packets results in an increased sending bit rate. Thus, a re-transmission of data packets should only be initiated in a case of packet losses due to bit errors and not due to congestion.